package com.pubinfo.passbook.api.eip;

import com.pubinfo.passbook.common.entity.TRabbitmqPersonConvert;
import com.pubinfo.passbook.common.entity.TSystemRole;
import com.pubinfo.passbook.common.model.http.eip.UserInfo;
import com.pubinfo.passbook.common.model.http.eip.UserInformation;

import java.util.List;

/**
 * @author zhouch
 */
public interface UserInfoService {
  
  /**
   * 缓存前缀
   */
  String USERINFO_CACHE_KEY_PREFIX = "user::token::";
  
  String userNsrsbhByAcct(String acct);
  
  /**
   * 通过令牌获得当前用户信息
   *
   * @param token
   * @return
   */
  UserInfo getCurrentUserInfo(String token);
  
  TSystemRole getCurrentUserRole(String nsrsbh);
  
  TSystemRole getCurrentUserRole();

  /**
   * 第一次登录时使用UserInfo的jthrLoginName获取角色
   */
  public TSystemRole getCurrentUserRoleByNoLogin(String jthrLoginName);

  List<TSystemRole> listCurrentUserRole(String currentAcct);
  
  List<TSystemRole> listCurrentUserRole();
  
  /**
   * 获取当前用户所属区县id
   *
   * @return
   */
  String getCurrentUserNsrsbh();
  
  /**
   * 直接获取当前登录用户信息
   *
     * @return
     */
    UserInfo getCurrentUserInfo();

    String getCurrentAcctId();

    String getCurrentAcct();

    /**
     * 通过令牌获得当前4A用户信息
     *
     * @param token
     * @return
     */
    TRabbitmqPersonConvert getCurrent4AUserInfo(String token);

    /**
     * 判断当前用户是否为部门管理员 部门报销员
     *
     * @param roleCode 角色code
     * @return
     */
    Boolean judgeRole(String roleCode);

    /**
     * 获取当前用户对应的角色
     *
     * @return
     */
    TSystemRole getRoleInfo();

    /**
     * @param token
     * @param user
     * @return
     */
    Boolean setCurrentUserInfo(String token, UserInfo user);


    /**
     * 修改当前用户缓存中的nsrsbh字段
     *
     * @return
     */
    Boolean setNsrsbhToCurrentUserInfo(String nsrsbh);


    /**
     * 获取当前用户的全部信息
     * @return
     */
    UserInformation getUserInformation();
}
